1. Field of the Invention
The present invention pertains to cards used in computing apparatus for computing systems and, more particularly, to a tuned stub, SCSI topology for use in such a card.
2. Description of the Related Art
As the power of individual electronic computing devices has increased, computing systems have become more distributed. Early “personal” computers, although powerful for their time, were suitable for little more than primitive word processing, spreadsheet, and video game applications More intensive applications, e.g., computer aided design/computer aided manufacturing (“CAD/CAM”) applications were typically hosted on relatively large, more powerful “mainframe” computers. Users invoked applications from time-sharing terminals that served as a conduit for information. However, most of the computational power resided on the host mainframe, where most of the computations were performed.
Stand-alone computing devices eventually evolved from dumb terminals and weak personal computers to powerful personal computers and workstations. As they became more powerful, the computational hours for applications became more distributed. Individual computers eventually became networked, and the networks distributed the computational activities among the network members. Many computations once performed on a mainframe computer, or that were not previously performed, were now performed on networked personal computers. Networks also permitted users to share certain types of computing resources, such as printers and storage.
More powerful computing devices also permitted larger, more complex networks and other computing systems. Small local area networks (“LANs”) became wide area networks (“WANs”). Recently, networks have evolved to produce system or storage area networks (“SANs”). Some of these networks are public, e.g., the Internet. Some may be characterized as “enterprise computing systems” because, although very large, they restrict access to members of a single enterprise or other people they may authorize. Some enterprise computing systems are referred to as “intranets” because they employ the same communication protocols as the Internet.
FIG. 1 illustrates some concepts associated with large scale computing systems such as SANs. The computing system 100 includes two servers 105, 110 that include a Redundant Array of Independent Disks (“RAID”) controller 115, a Fibre Host Bus Adapter (“HBA”) 120, and at least one internal disk 125. Each RAID controller is connected to the internal disk 125 and an external storage enclosure 130, also commonly referred to as Just a Bunch Of Disks (“JBOD”). The RAID controller 115, internal disk 125, and JBOD 130 constitute “direct attached storage” subsystem. The direct attached storage subsystem is “local” to the respective servers 105, 110 in the sense that other servers cannot read from or write to it. The Fibre HBA 120 connected to a switch or hub 135 in a switched Fibre fabric 140. The servers 150, 110 can both read from and write to the mass storage units 145 through their respective Fibre HBA 120 and the switch/hub 135 in the switched fabric 140. Thus, the Fibre HBAs 120, switched fabric 140, switch/hub 135, and mass storage units 145 constitute a “shared” memory subsystem.
Most types of electronic and computing systems comprise many different devices that electronically communicate with each other over one or more buses. Exemplary types of devices include, but are not limited to, processors (e.g., microprocessors, digital signal processors, and micro-controllers), memory devices (e.g., hard disk drives, floppy disk drives, and optical disk drives), and peripheral devices (e.g., keyboards, monitors, mice). When electrically connected to a bus, these types of devices, as well as others not listed, are all sometimes generically referred to as “bus devices.” In FIG. 1, the RAID controllers 115 communicate the buses 150, 155, respectively. The Fibre HBA 120 communicates with switched Fabric 140 and mass storage units 145 over buses 160, 165, respectively.
For instance, a computer typically includes one or more printed circuit boards having multiple integrated circuit components (or “bus devices”) and connectors mounted to them. The components and connectors are interconnected by and communicate with each other over trace etched into the board. The boards are interconnected by plugging one or more of the boards into another board intended for this purpose. A first component on a board communicates with a second component on the same board over the traces etched onto the board. The first component communicates with a component on another board through the connectors by which the two boards are plugged into the third board intended for that purpose. Thus, both the traces on the boards and the connectors between the boards are a part of the bus. Again referring to FIG. 1, the RAID controllers 115 and Fibre HBAs 120 are two such printed circuit boards.
A bus, in the conceptually simplest form, is therefore a collection of wires (or, “conductive traces”) and connectors over which the various electronic devices in a piece of electronic or computing equipment transmit information. However, any given bus may be implemented in many different ways. A bus may be implemented so as to transmit only data, or only commands, or both data and commands, for instance. But many more permutations are available based on other operating characteristics, such as bus width and bus speed. These two characteristics are exemplary only, and many other characteristics not listed are considered in designing any particular bus implementation. Occasionally, an industry group will formalize a set of operating characteristics into a “standard.” The standard will set flexible definitions for the standard that permit some variation in design but generally ensure compatibility for designs meeting the standard.
One such bus standard is the Small Computer System Interface (“SCSI”, pronounced “scuzzy”). There are actually many different kinds of SCSI, each defined by a different SCSI standard. More particularly, at least the following varieties of SCSI are currently implemented: SCSI-1, SCSI-2, Wide SCSI, Fast SCSI, Fast Wide SCSI, Ultra SCSI, SCSI-3, Ultra Wide SCSI, Ultra2 SCSI, Fibre Channel, and Wide Ultra2 SCSI as well as some buses utilizing optical interconnections. Thus, in actuality, there are several SCSI standards and they are not necessarily compatible with each other, although the basic SCSI standards (SCSI-1, SCSI-2, and SCSI-3) are basically functionally compatible. On the other hand, one problem with these standards is that it is hard in many cases to draw the line between them.
Generally, SCSI began as a parallel interface standard used by Apple Macintosh computers, PCs, and many UNIX systems for attaching peripheral devices to computers. The original intent was to develop an interface providing faster data transmission rates (up to 80 megabytes per second) than the standard serial and parallel ports found on computers of the time. However, the SCSI standards proved to be enormously more useful than this original intent. One distinct advantage to the SCSI interface was that it permitted a user to attach many devices to a single SCSI port. The conventional serial and parallel ports of the time generally were limited to one device per port. SCSI consequently presented numerous advantages, and, not surprisingly many of these greatly facilitated the attachment of peripheral devices for input/output (“I/O”) purposes. So, SCSI really was an I/O bus rather than simply an interface.
The various SCSI standards showed still more versatility and have been adapted to large scale computing environments, including networks, both local area networks (“LANs”) and wide area networks (“WANs”). One large scale computing application is the implementation of redundant arrays of inexpensive disks (“RAIDs”), which uses multiple arrays of multiple disks to improve performance and enhance reliability. A RAID is essentially a large storage device, and typically interfaces with a server or other computing device. In this circumstance, both the RAID and the other computing device may both be implemented using SCSI buses, although this is certainly not required.
The SCSI standard requires the SCSI bus to be terminated to preserve signal integrity, which can be degraded by distributed capacitive loads found on the SCSI bus. The SCSI bus must be terminated at each end of the bus, but the terminators may be internal to the SCSI devices at the end of the cable. Terminators are specified by the SCSI standard to be 220 Ω to Terminal Power and 330 Ω to ground for passive termination. Active termination using a 2.85 V regulator and a 110 Ω resister is recommended for data rates of 5 Mb per second and higher. Terminal power is equivalent to 5 V power with a backflow current prevention diode. The design for generating Terminal Power, or TERMPWR, is well known and is not discussed herein.
One problem with terminating arises when the SCSI controller is driving a SCSI bus where the controller is in the middle of the bus rather than at one end. Such is the case when the computer has an internal bus and a connector for external expansion. The internal bus is for the system hard drive(s) and other SCSI peripherals added internally to the computer system. The external SCSI bus provides expandability so that devices external to the computer system can still communicate over the installed SCSI bus. An external SCSI connector is typically provided at the rear of the computer system. When two physically different buses are present, then the controller may find itself not at the end of the SCSI bus, but in the middle. In this case, the devices at the end of the internal and external SCSI branches are responsible for terminating the SCSI bus.
Thus, in some implementations, either the internal or the external connector is used, but not both. The unused connector then becomes what is known as a “stub.” Stubs are undesirable because they tend to degrade signal quality. System designers frequently try to mitigate this degradation by making the stubs as short as possible while placing the terminator as close as possible to the route. Alternatively, system designers daisy-chain the stubs and placing the terminator on the end of the daisy chain. Each of these solutions leaves something to be desired, however.
The present invention is directed to resolving, or at least reducing, one or all of the problems mentioned above.